﻿#ifndef IMAGELABEL_H
#define IMAGELABEL_H

#include <QLabel>
#include <qevent.h>
#include <qpainter.h>
#include <QMessageBox>

class ImageLabel : public QLabel
{
    Q_OBJECT
public:
    explicit ImageLabel(QWidget *parent = nullptr);

    void loadImage(const QString &filePath);

    void saveImage(const QString &filePath);

    void clearMarkers();

protected:
    // void mousePressEvent(QMouseEvent *event) override {
    //     if (originalImage.isNull()) return;

    //     if (event->button() == Qt::LeftButton) {
    //         // 计算相对于图像的实际坐标
    //         QPoint pos = event->pos();
    //         QPoint imagePos = convertToImageCoordinates(pos);

    //         // 确保坐标在图像范围内
    //         if (imagePos.x() >= 0 && imagePos.x() < originalImage.width() &&
    //             imagePos.y() >= 0 && imagePos.y() < originalImage.height()) {
    //             points.append(imagePos);
    //             update(); // 触发重绘
    //         }
    //     }
    // }

    // void paintEvent(QPaintEvent *event) override {
    //     QLabel::paintEvent(event);

    //     if (!originalImage.isNull()) {
    //         QPainter painter(this);
    //         painter.setRenderHint(QPainter::Antialiasing);

    //         // 设置标记样式
    //         QFont font;
    //         font.setPointSize(12);
    //         font.setBold(true);
    //         painter.setFont(font);

    //         // 绘制所有标记点
    //         for (int i = 0; i < points.size(); ++i) {
    //             const QPoint &imagePoint = points[i];
    //             QPoint widgetPoint = convertToWidgetCoordinates(imagePoint);

    //             // 绘制圆形
    //             painter.setPen(QPen(Qt::red, 2));
    //             painter.setBrush(QBrush(QColor(255, 100, 100, 150))); // 半透明填充
    //             painter.drawEllipse(widgetPoint, 12, 12);

    //             // 绘制序号
    //             painter.setPen(Qt::white);
    //             QString number = QString::number(i + 1);

    //             // 计算文本位置使其居中
    //             QFontMetrics metrics(font);
    //             int textWidth = metrics.horizontalAdvance(number);
    //             int textHeight = metrics.height();

    //             painter.drawText(widgetPoint.x() - textWidth/2, widgetPoint.y() + textHeight/4, number);
    //         }
    //     }
    // }

private:
    QImage originalImage;
    QList<QPoint> points;

    QPoint convertToImageCoordinates(const QPoint &widgetPos);

    QPoint convertToWidgetCoordinates(const QPoint &imagePos);
signals:
    void sigSaveSuccessed(const QString &filePath);
};
#endif // IMAGELABEL_H
